package com.yixun.qfbao.api.service;

import com.yixun.qfbao.apidto.WxMsgCommonDto;
import com.yixun.qfbao.model.PartnerInfo;
import com.yixun.qfbao.xf.model.CustomerPremises;

import java.util.Date;
import java.util.List;

public interface WxTemplateMsgService {

    /**
     * 发送到访成功模板消息
     * @param agencyAccessToken
     * @param cusPre
     * @param wxMsgCommonDto
     * @param visitTime
     */
    void sendVisitSuccessTemplateMsg(String agencyAccessToken, CustomerPremises cusPre, WxMsgCommonDto wxMsgCommonDto, Date visitTime);

    /**
     * 发送签约成功模板消息
     * @param agencyAccessToken
     * @param assistantAccessToken
     * @param cusPre
     * @param devCompanyName
     * @param reqDto
     */
    void sendSignSuccessTemplateMsg(String agencyAccessToken, String assistantAccessToken, CustomerPremises cusPre, String devCompanyName, WxMsgCommonDto reqDto);

    /**
     * 发送报备成功模板消息
     * @param agencyAccessToken
     * @param assistantAccessToken
     * @param customerPremises
     * @param wxMsgCommonDto
     */
    void sendReportSuccessTemplateMsg(String agencyAccessToken, String assistantAccessToken, CustomerPremises customerPremises, WxMsgCommonDto wxMsgCommonDto);

    /**
     * 发送报备驳回模板消息
     * @param agencyAccessToken
     * @param assistantAccessToken
     * @param customerPremises
     * @param wxMsgCommonDto
     */
    void sendReportRefueTemplateMsg(String agencyAccessToken, String assistantAccessToken, CustomerPremises customerPremises, WxMsgCommonDto wxMsgCommonDto);

    /**
     * 发送报备审核提醒模板消息
     */
    void sendReportCheckTemplateMsg(String assistantAccessToken, String companyUuid, String domain,
                                    Long cusId, String premisesId, String staffId, String cusName, String cusPhone, String visitTime);

    /**
     * 发送到访审核提醒模板消息
     */
    void sendVisitCheckTemplateMsg(String assistantAccessToken, String companyUuid, String domain,
                                    Long cusId, String premisesId, String staffId, String cusName, String cusPhone, String visitTime);

    /**
     * 发送报备申诉提醒模板消息
     */
    void sendReportAppealTemplateMsg(String assistantAccessToken, String companyUuid, String domain, Long cusPreId, String premisesId
            , String staffId, String name, String mobile, String toString);

    /**
     * 发送认筹成功提醒模板消息
     */
    void sendPayDepositSuccessTemplateMsg(String agencyAccessToken, String assistantAccessToken, String companyUuid, String domain,
                                          Long cusPreId, String premisesId, String staffId, String cusName, String cusPhone);

    /**
     * 发送认购成功提醒模板消息
     */
    void sendSubscribeSuccessTemplateMsg(String agencyAccessToken, String assistantAccessToken, String companyUuid
            , String domain, Long cusPreId, String premisesId, String staffId, String name, String mobile);

    /**
     * 发送签约失败提醒模板消息
     */
    void sendDealFailTemplateMsg(String agencyAccessToken, String assistantAccessToken, WxMsgCommonDto wxMsgCommonDto, Long cusPreId, String premisesId, String staffId, String cusName, String cusPhone, String failRemark);

    /**
     * 发送楼盘上架提醒模板消息
     */
    void sendPremisesShelveTemplateMsg(String agencyAccessToken, String companyUuid, String domain, String premisesId);

    /**
     * 发送楼盘下架提醒消息
     */
    void sendPremisesUnshelveTemplateMsg(String agencyAccessToken, String companyUuid, String domain, String premisesId, String saleStatus);

    /**
     *
     * @param agencyAccessToken
     * @param companyUuid
     * @param domain
     * @param premisesId
     * @param cancelAgency
     * @param confirmAgency
     */
    void sendPremisesUnshelveTemplateMsgForAgency(String agencyAccessToken, String companyUuid, String domain, String premisesId, List<String> cancelAgency, List<String> confirmAgency);

    /**
     * 批量指定分销商给每个管理员发送
     * @param agencyAccessToken
     * @param companyUuid
     * @param domain
     * @param premisesId
     * @param cancelAgency
     * @param confirmAgency
     */
    void sendPremisesUnshelveTemplateMsgForAgencyAdmin(String agencyAccessToken, String companyUuid, String domain, String premisesId, List<String> cancelAgency,List<String> confirmAgency);

    void sendReportSuccessTemplateMsgForV10(String agencyAccessToken, String assistantAccessToken, CustomerPremises customerPremises, String companyUuid);

    /**
     *	 发送审核消息
     * @param companyUuid
     * @param partnerInfo
     * @param checkResult true 审核通过，false 审核失败
     * @param remark 审核备注
     */
    void sendCheckTemplateMsg(String companyUuid, PartnerInfo partnerInfo, boolean checkResult, String remark, String type);
    
    /**
    * 发送跟进消息
     * @param assistantAccessToken
     * @param companyUuid
     * @param reportId
     */
    void sendFollowTemplateMsg(String assistantAccessToken, String companyUuid, Long reportId);
}
